const fs=require("fs").promises;
// fs.readFile("path","utf-8").then()
console.log(1);
let p = new Promise((resolve, reject) => {
    console.log(2);
    //这里就是写需要管理的异步代码
    //所谓的管理：
    let xhr = new XMLHttpRequest();
    xhr.open("get", "sjjsjsj");
    xhr.send();
    xhr.onreadystatechange = function () {
        //做一些业务逻辑
        if (xhr.status == 4) {
            if (xhr.readyState == 200) {
                //.....
                //以为通过promise去封装，不再希望在这里写业务代码，而是去改变promise的状态；
                console.log(3);
                resolve(xhr.responseText);
            }else {
                reject("")
            }
        }
    }
})
p.then((data) => {
    //拿到数据data，并去做业务逻辑的事情
    console.log(4);
}).catch((error) => {
    //失败
})
console.log(5);
//promise 把回调地域，变成了 链式操作；
//高手，async 

// 有三个异步ajax；a  b  c；要求  a 完成之后启动b  b完成启动c；

function CreatePromise(url){
    let p = new Promise((resolve, reject) => {
        console.log(2);
        //这里就是写需要管理的异步代码
        //所谓的管理：
        let xhr = new XMLHttpRequest();
        xhr.open("get",url);
        xhr.send();
        xhr.onreadystatechange = function () {
            //做一些业务逻辑
            if (xhr.status == 4) {
                if (xhr.readyState == 200) {
                    //.....
                    //以为通过promise去封装，不再希望在这里写业务代码，而是去改变promise的状态；
                    console.log(3);
                    resolve(xhr.responseText);
                }else {
                    reject("")
                }
            }
        }
    })
    return p;
}

async function fn(){
    let dataA=await CreatePromise("urla");
    let dataB=await CreatePromise("urlb");
    let dataC=await CreatePromise("urlc");
}

//又来ajaxD

async function fm(){
    await fn();
    CreatePromise("ajaxD")
}



